/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> levelOrder(TreeNode* root) {
        if(!root)  return  vector<int>(0,0); 
        /*
        本题需要从上到下以及将各节点输出，越靠近根节点就越先输出，与队列“先进先出”的特点相吻合；
        考虑用一个队列模拟打印二叉树，将当前节点入队并输出，在一次将其左右节点入队，之后是左节点将其子节点入队。。。
        */
        vector<int> result;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            result.push_back(q.front()->val);
            if(q.front()->left)  q.push(q.front()->left);
            if(q.front()->right)  q.push(q.front()->right);
            q.pop();  //该节点已输出
        }
        return result;
    }
};